home *** CD-ROM | disk | FTP | other *** search
- // SharpenFlou ( jim.ro )=ps_2_0
- // http://www.homecinema-fr.com/forum/viewtopic.php?t=29814317
-
- sampler s0 : register(s0);
- float4 p0 : register(c0);
- float4 p1 : register(c1);
-
- #define width (p0[0])
- #define height (p0[1])
- #define counter (p0[2])
- #define clock (p0[3])
- #define one_over_width (p1[0])
- #define one_over_height (p1[1])
-
- #define PI acos(-1)
-
- float4 main( float2 tex : TEXCOORD0 ) : COLOR
- {
- float dx = one_over_width;
- float dy = one_over_height;
-
- // recupperation de la matrice de 9 points
- // [ 1, 2 , 3 ]
- // [ 4,ori, 5 ]
- // [ 6, 7 , 8 ]
-
- float4 ori = tex2D(s0, tex);
- float4 c1 = tex2D(s0, tex + float2(-dx,-dy));
- float4 c2 = tex2D(s0, tex + float2(0,-dy));
- float4 c3 = tex2D(s0, tex + float2(dx,-dy));
- float4 c4 = tex2D(s0, tex + float2(-dx,0));
- float4 c5 = tex2D(s0, tex + float2(dx,0));
- float4 c6 = tex2D(s0, tex + float2(-dx,dy));
- float4 c7 = tex2D(s0, tex + float2(0,dy));
- float4 c8 = tex2D(s0, tex + float2(dx,dy));
-
- // calcul image floue (filtre gaussien)
- float multipliers[9]=
- {1,2,1,
- 2,4,2,
- 1,2,1};
-
- float4 total=0;
- total += c1 * multipliers[0];
- total += c2 * multipliers[1];
- total += c3 * multipliers[2];
- total += c4 * multipliers[3];
- total += ori * multipliers[4];
- total += c5 * multipliers[5];
- total += c6 * multipliers[6];
- total += c7 * multipliers[7];
- total += c8 * multipliers[8];
-
- // 1/(1+2+1+2+4+2+1+2+1) = 1/ 16 = .0625
- total *= 0.0625f;
-
- // soustraction de l'image flou a l'image originale
- total = 2*ori - total;
- //return ori;
- return total;
- }